-- CALC_SIGN_IN_BONUS

-- 计算签到奖励
return function(days, signInInfo)
    -- 固定奖励怪盗及其碎片
    local heroId = 33;
    local classId = PetM.query(heroId, "chips");
    local ret = { };

    -- 首周特殊奖励
    if NewSignInM.isFristWeek() then
        ret = { { 2, "gem", 3 }, { 2, "gem", 3 }, { 3, heroId, 1 },
                { 2, "gem", 3 }, { 2, "radish", 1 }, { 2, "gem", 3 },
                { 1, classId, 20 }, };
    else
        ret = { { 2, "money", 30000 }, { 2, "gem", 3 }, { 1, classId, 10 },
                { 2, "money", 50000 }, { 1, classId, 10 }, { 2, "gem", 3 },
                { 1, classId, 10 }, };
    end

    local bonus = ret[days];

    -- 碎片满了之后的修正
    local pet = PetM.getMyPet(heroId);
    if pet and bonus[2] == classId then
        local rank = pet:getRank();
        local medalClassId = EquipM.getHeroEquip(pet, EQUIP_TYPE_MEDAL, 1);
        -- 佩戴了证书
        if medalClassId then
            rank = rank + 1;
        end
        -- 需求的碎片数量
        local require = { 410, 390, 360, 300, 180, 0 };
        -- 拥有的碎片数量
        local num = ItemM.getAmount(ME.user, classId);
        -- 拥有的多了
        if num >= require[rank] then
            -- 替换为普通罐
            bonus = { 1, 1511, 1};
        end
    end

    -- 签到奖励钻石+N
    local prop = PropM.combine(ME.user, "register_bonus2", "gem");
    if bonus[2] == "gem" then
        bonus[3] = PropM.apply(prop, bonus[3]);
    end

    -- 钻石上限奖励修正，替换为50000金币
    if bonus[2] == "gem" and signInInfo["bonus_type"] == "money" then
        bonus = { 2, "money", 50000 };
    end

    return { bonus };
end
